package com.bawei.lib_common.base

import android.app.Activity
import android.app.Application
import android.os.Bundle
import cn.jiguang.api.utils.JCollectionAuth
import cn.jpush.android.api.JPushInterface
import com.alibaba.android.arouter.launcher.ARouter
import com.bawei.lib_common.flow_eventbus.EventBusInitializer
import com.bawei.lib_common.utils.AppHolder
import com.bawei.lib_common.utils.LoggerUtils
import com.bawei.lib_storage.mmkv.AppMMKV
import com.tencent.bugly.crashreport.CrashReport
import com.tencent.mmkv.MMKV
import com.umeng.analytics.MobclickAgent
import com.umeng.commonsdk.UMConfigure

/**
 * @author yaotianxue
 * @description
 * @date 2025/5/22
 */
open class BaseApplication:Application() {
    companion object{
        lateinit var instance:BaseApplication
    }
    override fun onCreate() {
        super.onCreate()
        instance = this
        initMMKV()
        initARouter()
        initAppHolder()//管理项目中所有的activity
        initJPush() //极光推送
        initEventBus()
        initUmeng()
        initBugly()

    }

    private fun initBugly() {
        if(AppMMKV.splashAgreement){
            CrashReport.initCrashReport(this, "c0befbb921", true);
        }
    }

    private fun initUmeng() {
        //主线程预初始化
        UMConfigure.preInit(this,"67170cee80464b33f6e18739","channel")
        // 自动采集选择:只能采集activity，而且全部activity
//        MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO)
//        //手动采集选择：按需采集
        MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.MANUAL);
        //设置LOG开关，默认为false
        UMConfigure.setLogEnabled(true);
        //判断用户是否同意过:正式初始化，建议放在后台线程中，减少app启动时间
        if(AppMMKV.splashAgreement){
            Thread{
                UMConfigure.init(this,"67170cee80464b33f6e18739","channel", UMConfigure.DEVICE_TYPE_PHONE,null)
            }.start()

        }
    }


    private fun initEventBus() {
        EventBusInitializer.init(this)
    }

    private fun initJPush() {
        JCollectionAuth.setAuth(this, true)
        JPushInterface.setDebugMode(true)//BuildConfig.Debug
        JPushInterface.init(this)
    }

    private fun initAppHolder() {
        AppHolder.initialize(this)
    }


    fun initMMKV(){
        MMKV.initialize(this)
    }

    fun initARouter(){
        //        if () {           // 这两行必须写在init之前，否则这些配置在init过程中将无效
        ARouter.openLog();     // 打印日志
        ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！线上版本需要关闭,否则有安全风险)
//        }
        ARouter.init(this); // 尽可能早，推荐在Application中初始化

    }

}